Method and apparatus for ordering packets, associated with different streams of data, in a single queue prior to transmission of the packets in a network

ABSTRACT

Systems, methods, and other embodiments associated with ordering packets into a transmission order within a queue are described. According to one embodiment, an apparatus includes shaper logic configured to (i) respectively determine launch times for packets received from a host bus, and (ii) order the packets into a transmission order according to the launch times. The launch times are expected transmission times for the packets that are provided according to one or more attributes associated with each respective one of the packets. The apparatus includes a queue configured to store the packets in the transmission order for transmission onto a network in a single stream. The shaper logic is configured to merge the packets from multiple streams into the transmission order when providing the packets to the queue.

CROSS REFERENCE TO RELATED APPLICATIONS

This patent disclosure claims the benefit of U.S. ProvisionalApplication Ser. No. 61/845,537 filed on Jul. 12, 2013, which is herebywholly incorporated by reference.

BACKGROUND

Communication networks may be used to stream multimedia data to variouscomputing and electronic devices. However, difficulties may beencountered in providing streamed multimedia data over a network. Forexample, video streamed over a network may suffer from pauses in imagesand/or glitches in sound when associated multimedia data does not arriveon-time at a device on which the video is being presented.

Accordingly, to enable reliable presentation of the streamed multimediadata, the communication networks may be time aware. For a network to betime aware, compliance with timing constraints are followed that includeproviding multimedia data at scheduled transmission intervals. Thesescheduled transmissions are intended to provide timely delivery of themultimedia data to devices so that difficulties with quality (e.g.,pauses and/or glitches) can be avoided.

SUMMARY

In general, in one aspect this specification discloses an apparatus. Theapparatus includes shaper logic configured to (i) respectively determinelaunch times for packets received from a host bus, and (ii) order thepackets into a transmission order according to the launch times. Thelaunch times are expected transmission times for the packets that areprovided according to one or more attributes associated with eachrespective one of the packets. The apparatus includes a queue configuredto store the packets in the transmission order for transmission onto anetwork in a single stream. The shaper logic is configured to merge thepackets from multiple streams into the transmission order when providingthe packets to the queue.

In general, in another aspect, this specification discloses a method.The method includes determining launch times for packets received from ahost bus. The method includes ordering the packets into a transmissionorder according to the launch times. The launch times are expectedtransmission times for the packets. The launch times are providedaccording to one or more attributes associated with each respective oneof the packets. The method includes storing the packets in a queue inthe transmission order for transmission onto a network. Storing thepackets in the queue merges the packets from multiple streams into thetransmission order for providing the packets in a single stream.

In general, in another aspect, this specification discloses a device.The device includes shaper units that are connected to a bus-sidearbiter. The bus-side arbiter provides packets from a host bus. Theshaper units are configured to respectively determine a launch time foreach of the packets according to transmission characteristics of eachpacket. The shaper units each include an output. The device includes aqueue arbiter connected to outputs from the shaper units. The queuearbiter is configured to arrange the packets in an order fortransmission according to the launch time of each of the packets. Thedevice includes a queue that includes an input connected to the queuearbiter. The queue is configured to store the packets in the order fortransmission as arranged by the queue arbiter.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of the specification, illustrate various systems, methods, andembodiments of the disclosure. Illustrated element boundaries (e.g.,boxes, groups of boxes, or other shapes) in the figures represent oneexample of the boundaries. In some examples, one element may be designedas multiple elements or multiple elements may be designed as oneelement. In some examples, an element shown as an internal component ofanother element may be implemented as an external component and viceversa.

FIG. 1 illustrates one embodiment of an apparatus associated withmerging multiple queues into a single queue by pre-ordering packets.

FIG. 2 illustrates one embodiment of a device associated with using asingle first-in first-out queue when transmitting multimedia data.

FIG. 3 illustrates one embodiment of a device for transmitting data.

FIG. 4 illustrates one example of ordering packets from multiple streamsinto a single queue.

FIG. 5 illustrates one embodiment of a method associated with mergingmultiple queues into a single queue by pre-ordering packets.

FIG. 6 illustrates one embodiment of an integrated circuit associatedwith systems and methods discussed herein.

DETAILED DESCRIPTION

Described herein are examples of systems, methods, and other embodimentsassociated with ordering packets associated with multiple streams into atransmission order using a single queue. Streaming multimedia datainvolves transmitting several different streams of packets. Thedifferent streams of packets have different classes of service orpriorities at which the different streams are provided. For example,when streaming video, an image portion of the video may have a firstclass of service while an audio portion may have a second class ofservice. This is because the audio may use less bandwidth than the videoand thus does not use as high of a priority or bandwidth allocation asthe video. Accordingly, the audio and video are assigned separateclasses of service in order to provide for transmitting the respectivepackets at appropriate times.

However, the packets are initially received from a host bus in anunordered arrangement. That is, packets with a later launch time (i.e.,transmit time) may be received before packets with an earlier launchtime. As mentioned previously, in some embodiments, packets aredistributed between multiple different queues depending on a class ofservice. By contrast, in one embodiment, the packets are pre-orderedaccording to launch times and stored in a single queue. Thus, the singlequeue stores the packets in a correct order for transmission. In thisway, one queue can be used for the packets instead of using multiplequeues.

With reference to FIG. 1, one embodiment of an apparatus 100 is shownthat is associated with pre-ordering data into a single queue. Theapparatus 100 may be implemented in a network communication device, ahost bus and/or as a combination of the two. The apparatus 100 includesbus arbiter logic 110, shaper logic 120, a queue 130 and network logic140.

In one embodiment, the bus arbiter logic 110 is connected to a host busor other communication pathway of a host device. In general, the hostdevice is a computing device that provides multimedia communicationsonto a network for communication to one or more remote client devices.Accordingly, the bus arbiter logic 110 is configured to receive packetsfor the communications from the host bus.

The packets may include multimedia data (e.g., video, audio, etc.),non-multimedia data (e.g., application data) and so on. Thus, dependingon whether the packets should arrive at a client device at particulartime (i.e., time aware packets) the packets are characterizeddifferently. For example, different packets may be grouped into adifferent class of service, different bandwidth allocation groups and soon. The packets may be grouped separately so that packets associatedwith media streams can be transmitted in a way that maintains, forexample, quality of a media stream at a client device. Therefore, arespective packet is characterized accordingly to data being carried bythe packet.

In one embodiment, the bus arbiter logic 110 provides the packets as thepackets are received to the shaper logic 120. The shaper logic 120 mayinclude separate shaper units (not illustrated). Each of the separateshaper units is associated with a different class of service, differentvirtual queues, or, more generally, each of the shaper units isassociated with a group of data that has different characteristics.Accordingly, the arbiter logic 110 distributes the packets to anassociated shaper unit of the shaper logic 110 according to attributesof the data (e.g., class of service or virtual queue).

In general, each shaper unit of the shaper logic 120 operates similarlybut on data of a different class. Accordingly, the shaper logic 120 willbe discussed instead of referencing individual shaper units forsimplicity of discussion. In one embodiment, the shaper logic 120 isconfigured to perform multiple tasks. For example, the shaper logic 120performs direct memory access (DMA) functions for received packets ofdata. The shaper logic 120 also shapes packets for transmission. Thatis, as the shaper logic 120 prepares the packets for transmission.

Because various different packets are configured differently, the shaperlogic 120 prepares packets differently depending on one or moreattributes of each of the packets. Accordingly, the attributes mayinclude various characteristics as mentioned previously. For example,the attributes may include a class of service, bandwidth allocation, avirtual queue assigned to a packet, a type of stream associated with apacket and so on. In general, the packets may be classified according toany determinable characteristic.

Furthermore, the shaper logic 120 determines a launch time for each ofthe packets. For example, if a packet is part of a multimedia stream,then the packet may already include a launch time. The launch time is atime at which the packet is expected to be transmitted or released ontothe network. Depending on the packet, the launch time may be provided toensure continuity of data at a receiving device so that no difficultiesin playback of media arise. That is, each packet in, for example, amultimedia stream has a specified launch time in order to ensure packetsfrom the multimedia stream are providing at appropriate transmissionintervals to maintain playback quality of associated media.

However, not all packets are time aware and include a launch time. Forexample, packets associated with generic application data may not betime aware and thus may not include a launch time.

Accordingly, for packets that do not include a launch time, the shaperlogic 120 calculates the launch time. In one embodiment, the shaperlogic 120 calculates a launch time for a packet by using an allocatedbandwidth associated with the packet, a size of a previous packet in asame stream as the packet and a launch time of the previous packet. Fromthese values the shaper logic 120 calculates a delta value thatindicates a time after transmission of the previous packet when thepacket should be transmitted. In general, the current packet and theprevious packet are of a same class of service or stream. Thus,reference to a previous packet is intended to be a packet of a samestream and not necessarily an immediately previous packet that wastransmitted overall.

The shaper logic 120 is configured to use launch times for the packetswhen arranging the packets into a transmission order. That is, theshaper logic 120 orders packets according to a launch time for eachpacket so that the packets can be placed into an order for transmission.In this way, the shaper logic 120 orders packets from multiple streamsinto a single stream for transmission.

Furthermore, some of the packets may have an identical or nearlyidentical launch time. When two or more packets have a same launch timea conflict occurs between which of the two or more packets should beordered first in the transmission order. Thus, the shaper logic 120resolves conflicts in the transmission order by providing whicheverpacket that has a higher priority or class of service with preference.In this way, streams with, for example, a higher priority are notinterrupted by packets from a lower priority that have a same launchtime being transmitted instead.

Continuing with ordering the packets, as the shaper logic 120 orders thepackets, the packets from the various shaper units of the shaper logic120 are merged and stored in the queue 130. Thus, multiple separatestreams of packets are combined into a single stream within the queue130.

In one embodiment, the queue 130 is a buffer, register or other memorydevice. Additionally, the queue 130 may be a first-in first-out queue. Afirst-in first-out queue is a type of queue that provides an oldestentry at a head of the queue 130. Thus, the oldest entry or first-inwill be a first entry out of the queue 130. In this way, packets can beadded to the queue continuously without re-arranging the transmissionorder and while packets at a head of the queue 130 are being releasedonto the network.

Thus, an order of the packets in the queue 130 is a single stream thatis a transmission order. The transmission order is a pre-orderedarrangement of the packets that is an order by which the packets will bereleased onto the network. Thus, the transmission order is a finalcorrect order of the packets for transmission. By ordering the packetsaccording to a final transmission order, a single queue can be usedinstead of using a separate individual queue for each different class ofservice or stream of data.

Furthermore, the network logic 140 releases a packet from the queue 130when a launch time for the packet matches a current time and when thepacket is next in the transmission order to be sent. As mentionedpreviously, the queue 130 is a first-in first-out queue. Thus, packetsare released from the queue 130 onto the network according to a first-infirst-out basis. That is, when a packet is at a head of the queue 130(e.g., an oldest packet) and a launch time of the packet matches acurrent time, the network logic 140 will release the packet fortransmission.

In a case where two packets conflict, as discussed previously, a packetwith a higher priority is first released. A second packet with a samelaunch time may have a toggle bit set to indicate that the second packetshould be transmitted immediately after the previous packet without, forexample, checking a launch time against a current time. In general, thetoggle bit indicates that the second packet is from a different queuethan the packet with a higher priority. Thus, the second packet isdelayed only by however much time the higher priority packet takes to betransmitted.

Therefore, packets associated with audio-video bridging (AVB), TimeSensitive Network (TSN), and other data streaming techniques can beassigned to separate virtual queues while using a single queue to storeall of the packets without using multiple hardware queues. In this way,inefficiencies associated with redundant hardware queues can be avoided.

Further aspects of arranging streams of packets into a single queueaccording to a transmission order will now be discussed in relation toFIG. 2. FIG. 2 illustrates one embodiment of a device 200 associatedwith using a single queue to transmit multimedia data streams.

The device 200 includes a bus-side arbiter 210, shaper/DMA units 220(hereinafter generally referred to as shaper units 220 for purposes ofsimplicity), a queue arbiter 230, a queue 240 and a network arbiter 250.The bus-side arbiter 210, the queue 240 and the network arbiter 250 aresimilar to the bus arbiter logic 110, the queue 130 and the networklogic 140 respectively of FIG. 1.

However, the shaper units 220 differ from the shaper logic 120 asdiscussed with FIG. 1. For example, the shaper units 220 are illustratedwith three individual shaper units that are each connected to the queuearbiter 230. Accordingly, the shaper units 220 are each associated witha different virtual queue. A virtual queue is an abstract construct thatis used to classify packets/data received from the bus. Thus, each ofthe shaper units 220 is associated with one or more virtual queues andprocesses packet for the one or more virtual queues.

In one embodiment, the device 200 classifies different packet streamsand/or classes of service associated with the different packet streamsto different virtual queues. Accordingly, the device 200 candifferentiate between the different streams of data without usingseparate hardware queues. Thus, as the bus-side arbiter 210 receivesvarious packets from a host device via the bus, the bus-side arbiter 210distributes the packets to different ones of the shaper units 220according to a virtual queue assigned to each of the various packets.

Subsequently, the shaper units 220 perform direct memory access (DMA)functions and also shape the packets by determining a launch time foreach packet. As discussed previously, some packets (e.g., audio videobridging (AVB) packets) already include a launch time. In general,packets that include a launch time are time-aware packets. These packetsgenerally include multimedia data that is being streamed to remotedevices. Thus, for the multimedia stream to remain error free anduninterrupted the packets include a launch time to help ensure they aretransmitted at appropriate times.

Other packets may be asynchronous (e.g., time independent) or may lack alaunch time for other reasons. In either case, for packets without alaunch time, the shaper units 220 calculate an appropriate launch time.In one embodiment, the shaper units 220 calculate launch times bydetermining a delta value or time to transmit a next packet in a streambased on when a previous packet in the stream was transmitted. Theshaper units 220 may calculate the launch time of a packet according toa bandwidth associated with the stream, a size of the packet or of theprevious packet and when the previous packet was transmitted.

Once a packet has a launch time, the shaper units 220 pass the packet tothe queue arbiter 230. The queue arbiter 230 is a multiplexer that isconfigured to sort/order packets into the queue 240. In one embodiment,the queue arbiter 230 orders packets according to the launch times. Inthis way, an order of the packets as stored in the queue 240 is atransmission order. That is, the packets are placed in a final order asthey will be transmitted onto the network. In this way, the device usesonly a single queue where other embodiments use a separate queue foreach different stream.

Furthermore, the bus-side arbiter 210, the shaper units 220, the queuearbiter 230 and a portion of the queue 240 are illustrated as being on abus-side of the device 200, while a remaining portion of the queue 240and the network arbiter 250 are illustrated as being on a network side.The bus side and the network side refer to a location in hardware of thecomponents. In one embodiment, the bus side components are integratedwith a bus of a host device (e.g., a bus controller) while the networkside elements are integrated with a network interface card (NIC). Bymaintaining the bus-side arbiter 210, the shaper units 220, the queuearbiter 230 and portions of the queue 240 on the bus side, improvedspeed is realized by those components in contrast to if the components210, 220 and 230 were located on the network side.

For example, consider the device 200 of FIG. 2 in contrast to FIG. 3.FIG. 3 illustrates one embodiment of a device 300 associated withshaping network communications for multiple streams of data. In oneembodiment, the device 300 includes a bus-side arbiter 310, DMA units320, multiple queues 330, shaper units 340 and a network side arbiter350. Instead of using a single queue, as in the device 200 of FIG. 2,the device 300 uses multiple queues 330 with each of the queue 330associated with a different stream of data.

Comparing the device 300 of FIG. 3 with the device 200 of FIG. 2 showsthat the device 300 includes additional queues and includes additionalcomponents on the network side. For example, as illustrated the device300 includes three separate queues 330. Implementing the queues 330 inthis way uses additional hardware beyond a single queue as seen in thequeue 240 of FIG. 2. Accordingly, the device 300 consumes a greater areaon-chip than the device 200.

Furthermore, the device 300 includes the separate shaper units 340 on anetwork side and DMA units 320 on a bus side while the device 200 ofFIG. 2 includes a combined DMA and shaper in the shaper/DMA units 220 ona bus-side of the device 200. Accordingly, because the bus sideoperates, for example, at a higher rate, the combined DMA/shaper units220 of the device 200 operate at a higher rate than the shaper units 340of FIG. 3. Additionally, other aspects of the device 300, such as thenetwork-side arbiter 350, perform additional functions of sortingpackets as the packets are released onto the network. Sorting thepackets in this way can increase a processing load on network sidecomponents, which already operate at a lower rate than the bus sidecomponents.

Further aspects of ordering packets from multiple streams into a singlequeue for transmission will be discussed in reference to an example ofFIG. 4. FIG. 4 illustrates one example of how packets may be orderedinto the queue 240 of FIG. 2. For purposes of explanation FIG. 4 will bediscussed from the perspective of the device 200 of FIG. 2.

FIG. 4 includes three separate streams of packets 410, 420 and 430 thatare each illustrated on a separate timeline. The timeline illustrateslaunch times for packets but does not indicate when the bus-side arbiter210 receives the packets. Each of the streams 410, 420, and 430 areassociated with a different virtual queue a, b, and c respectively. Thevirtual queues a, b, and c are abstract constructs that are used only toclassify the different streams 410, 420 and 430. Additionally, whileonly three streams and three virtual queues are discussed, of course inother embodiments more virtual queues and streams may be implemented.

The separate streams 410, 420 and 430 and associated virtual queues eachhave different transmission characteristics. The transmissioncharacteristics may include transmission priority, bandwidth allocation,class of service, quality of service and so on. In any case, the device200 receives the separate streams asynchronously from a host device andarranges the packets of the streams 410, 420 and 430 into the queue 240,as shown.

Accordingly, as the bus-side arbiter 210 receives packets for theseparate streams, the packets are provided to one of the shaper units220 associated with a virtual queue of the stream. In this example,assume that the top shaper unit is associated with virtual queue a, amiddle shaper unit is associated with virtual queue b, and a bottom oneof the shaper units 220 is associated with virtual queue c.

Accordingly, the shaper units 220 determine launch times for the packetsby retrieving the launch times from the packets or calculating thelaunch times depending on a packet type (i.e., time aware or not).Consequently, the separate timelines in FIG. 3 unfold for the launchtimes. Subsequently, the queue arbiter 230 arranges the packets into thequeue 240, thereby providing the pre-ordered arrangement of packets 440.The pre-ordered arrangement 440 is a transmission order for the packetsthat is an expected order of transmission. Thus, an order in the queue240 is a final order for the packets in a single transmission streamthat is released onto the network.

As illustrated in FIG. 4, packet 1 a is a first packet into the queue240 since the packet 1 a has an earliest launch time. The packet 1 a isin a first in spot at a head of the queue and will thus be the firstpacket to be transmitted as illustrated. By contrast packet 5 a is alast-in packet at a tail of the queue 240 and will be the last packet tobe transmitted as illustrated. Of course, as additional packets arereceived and as packets are released from the queue 240, packets migratefrom the last-in position to the first-in position where they arereleased.

FIG. 4 also illustrates two conflicts between packets. Conflicts 450 and460 illustrate how the queue arbiter 230 resolves conflicts betweenpackets of separate streams/virtual queues when launch times conflict.For example, at conflict 450, packet 2 c conflicts with packet 3 b sincethey both have a same launch time as illustrated by a same placementalong the respective timelines. However, because virtual queue b has,for example, a higher priority, packet 3 b is placed in the queue priorto packet 2 c. Thus, packet 2 b will be transmitted before packet 3 b.Similarly, packet 8 b has priority over packet 5 c for conflict 460.

As an additional consideration, because packets that conflict have asame launch time, a second packet (e.g., 2 c and 5 c) may have anadditional indicator (e.g., toggle bit or queue indicator) set when theconflict is resolved. In this way, even though lower priorityconflicting packets will not be released at their exact launch time, thenetwork arbiter 250 can more easily recognize that a launch time for thepackets has passed and, thus, immediately issue those packets.

Furthermore, the network arbiter 250 is configured to release packetsfrom the queue 240 when a launch time for each successive packet is acurrent time. The network arbiter 250 proceeds to release packets byreleasing a packet at a head (i.e., first-in) of the queue 240 when alaunch time of that packet is a current time. Thus, as illustratedpackets would be released in the order of 1 a, 1 b, 1 c, 2 b, 2 a, 3 b,2 c, 4 b, 3 a, 3 c and so on while additional packets are added to alast-in location. In this way, the device 200 uses a single FIFO queue240 to merge packets that would otherwise be distributed betweenmultiple queues.

Further aspects of using a single FIFO queue for multiple data streamswill be discussed with reference to FIG. 5. FIG. 5 illustrates oneembodiment of a method 500 associated with improved audio-video bridging(AVB) and TSN with a single queue.

At 510, packets are received from a host bus. In general, the packetsare received at an interface in a host device between the host bus and anetwork interface card (NIC) or other communication pathway to anetwork.

In one embodiment, the packets include multiple data streams. Themultiple data streams may be audio video bridging (AVB) data streams,generic data and so on. In either case, each of the data streams is, forexample, assigned to one of a set of virtual queues that are eachassociated with different transmission characteristics for providing thepackets over a network to remote devices. The transmissioncharacteristics include different attributes for how a packet or astream of packets may be transmitted. For example, the transmissioncharacteristics may include class of service, bandwidth allocation andso on.

Furthermore, the host bus is part of a host device that provides thepackets to the remote devices. In general, the host device is acomputing device that communicates with one or more remote devices overa network (e.g., the Internet). In one embodiment, the host device is amultimedia server or other multimedia device.

Accordingly, as the packets are received from the host bus, the packetsare distributed to a DMA/shaper unit associated with a virtual queuethat is assigned to a respective packet.

At 520, launch times for packets received from the host bus aredetermined. As discussed previously, depending on a type of the packet,determining a launch time includes calculating the launch time or simplyretrieving the launch time from the packet. The launch time is the timeat which the packet is expected to be transmitted/released onto thenetwork.

Accordingly, at 530, the launch times determined at 520 are used toorder the packets. In one embodiment, the packets are ordered into atransmission order. The transmission order is an order in which thepackets are expected to be transmitted in a single stream on thenetwork. Thus, ordering the packets merges the packets from multiplevirtual queues into a single stream in one queue. In this way, a singlequeue can be used when, for example, performing audio video bridginginstead of using multiple hardware queues.

At 540, the ordered packets are stored in the single queue. In oneembodiment, the queue is a First-In First-out (FIFO) queue. By using aFIFO queue to store the ordered packets the transmission order can bemaintained and the packets can be released onto the network in a finalorder from the queue at 550.

At 550, the packets are released from the queue in a first-in first-outbasis. In one embodiment, releasing the packets includes releasing apacket from the queue when a launch time for the packet matches acurrent time and when the packet is next in the transmission order to besent. Thus, the single queue can be used for providing the packets ontothe network.

FIG. 6 illustrates an additional embodiment of the apparatus 100 fromFIG. 1 that is configured with separate integrated circuits and/orchips. In this embodiment, the bus arbiter logic 110 from FIG. 1 isembodied as a separate integrated circuit 610. Additionally, the shaperlogic 120 is embodied on an individual integrated circuit 620. The queue130 is also embodied on an individual integrated circuit 630 or memorydevice. Lastly, the network logic 140 is embodied on an individualintegrated circuit 640. The circuits are connected via connection pathsto communicate signals. While integrated circuits 610, 620, 630 and 640are illustrated as separate integrated circuits, they may be integratedinto a common integrated circuit board 600. Additionally, integratedcircuits 610, 620, 630 and 640 may be combined into fewer integratedcircuits or divided into more integrated circuits than illustrated. Inanother embodiment, the bus arbiter logic 110, the shaper logic 120, thequeue 130 and the network logic 140 (which are illustrated in integratedcircuits 610, 620, 630 and 640, respectively) may be combined into aseparate application-specific integrated circuit. In other embodiments,portions of the functionality associated with the bus arbiter logic 110and the shaper logic 120 may be embodied as firmware executable by aprocessor and stored in a non-transitory memory.

The following includes definitions of selected terms employed herein.The definitions include various examples and/or forms of components thatfall within the scope of a term and that may be used for implementation.The examples are not intended to be limiting. Both singular and pluralforms of terms may be within the definitions.

References to “one embodiment”, “an embodiment”, “one example”, “anexample”, and so on, indicate that the embodiment(s) or example(s) sodescribed may include a particular feature, structure, characteristic,property, element, or limitation, but that not every embodiment orexample necessarily includes that particular feature, structure,characteristic, property, element or limitation. Furthermore, repeateduse of the phrase “in one embodiment” does not necessarily refer to thesame embodiment, though it may.

“Computer storage medium” as used herein is a non-transitory medium thatstores instructions and/or data. A computer storage medium may takeforms, including, but not limited to, non-volatile media, and volatilemedia. Non-volatile media may include, for example, optical disks,magnetic disks, and so on. Volatile media may include, for example,semiconductor memories, dynamic memory, and so on. Common forms of acomputer storage media may include, but are not limited to, a floppydisk, a flexible disk, a hard disk, a magnetic tape, other magneticmedium, an ASIC, a CD, other optical medium, a RAM, a ROM, a memory chipor card, a memory stick, and other electronic media that can storecomputer instructions and/or data. Computer storage media describedherein are limited to statutory subject matter under 35 U.S.C §101.

“Logic” as used herein includes a computer or electrical hardwarecomponent(s), firmware, a non-transitory computer storage medium thatstores instructions, and/or combinations of these components configuredto perform a function(s) or an action(s), and/or to cause a function oraction from another logic, method, and/or system. Logic may include amicroprocessor controlled by an algorithm, a discrete logic (e.g.,ASIC), an analog circuit, a digital circuit, a programmed logic device,a memory device containing instructions that when executed perform analgorithm, and so on. Logic may include one or more gates, combinationsof gates, or other circuit components. Where multiple logics aredescribed, it may be possible to incorporate the multiple logics intoone physical logic component. Similarly, where a single logic unit isdescribed, it may be possible to distribute that single logic unitbetween multiple physical logic components. Logic as described herein islimited to statutory subject matter under 35 U.S.C §101.

While for purposes of simplicity of explanation, illustratedmethodologies are shown and described as a series of blocks. Themethodologies are not limited by the order of the blocks as some blockscan occur in different orders and/or concurrently with other blocks fromthat shown and described. Moreover, less than all the illustrated blocksmay be used to implement an example methodology. Blocks may be combinedor separated into multiple components. Furthermore, additional and/oralternative methodologies can employ additional actions that are notillustrated in blocks. The methods described herein are limited tostatutory subject matter under 35 U.S.C §101.

To the extent that the term “includes” or “including” is employed in thedetailed description or the claims, it is intended to be inclusive in amanner similar to the term “comprising” as that term is interpreted whenemployed as a transitional word in a claim.

While the disclosed embodiments have been illustrated and described inconsiderable detail, it is not the intention to restrict or in any waylimit the scope of the appended claims to such detail. It is, of course,not possible to describe every conceivable combination of components ormethodologies for purposes of describing the various aspects of thesubject matter. Therefore, the disclosure is not limited to the specificdetails or the illustrative examples shown and described. Thus, thisdisclosure is intended to embrace alterations, modifications, andvariations that fall within the scope of the appended claims, whichsatisfy the statutory subject matter requirements of 35 U.S.C. §101.

What is claimed is:
 1. An apparatus, comprising: a processor connectedto memory; and shaper logic stored within the memory and executable bythe processor, the shaper logic including a plurality of shapers whereeach shaper receives and stores a different packet stream of packets andwhere each of the shapers are configured to (i) respectively determinelaunch times for the packets received from a host bus, and (ii) orderthe packets into a transmission order according to the launch times,wherein the launch times are expected transmission times for the packetsthat are provided according to one or more attributes associated witheach respective one of the packets; and a queue arbiter stored withinthe memory and executable by the processor, the queue arbiter includinga multiplexer connected to each of the plurality of shapers, wherein thequeue arbiter is configured to merge the packets from the plurality ofshapers into a single queue and order the merged packets in the singlequeue based at least in part on the launch times of the packets; whereinthe single queue includes a single buffer that is configured to storethe packets from the queue arbiter in a merged transmission order; and anetwork arbiter stored within the memory and executable by theprocessor, the network arbiter being (i) connected to the single queueand (ii) configured to: release the packets from the single queue fortransmission onto a network in a single combined stream in the mergedtransmission order; identify a conflict where a first packet of a firststream and a second packet of a second stream have a same launch timeand, in response to identifying the conflict, set a toggle bit in thesecond packet; check that the launch time of the first packet matches acurrent time and transmit the first packet; and read the toggle bit setwithin the second packet, wherein based on the toggle bit, the secondpacket is transmitted immediately after transmission of the first packetfrom the first stream without checking a launch time of the secondpacket with the current time, wherein the second packet is assigned tothe second stream different than the first stream.
 2. The apparatus ofclaim 1, further comprising: bus arbiter logic stored within the memoryand executable by the processor, the bus arbiter logic configured toreceive the packets from a host bus and provide the packets to theshaper logic, wherein the bus arbiter logic is configured to distributethe packets to the plurality of shapers within the shaper logicaccording to the one or more attributes of each packet, wherein the oneor more attributes include a class of service, a priority or a bandwidthallocation, wherein the shapers are configured to calculate a launchtime for one or more of the packets that are not time aware, and whereinpackets that are not time aware are not sensitive to a delivery time ata client device.
 3. The apparatus of claim 1, wherein the toggle bitcomprises a queue indicator indicative of a virtual queue associatedwith the second stream from which the second packet was received.
 4. Theapparatus of claim 1, wherein a shaper is configured to: calculate alaunch time for a not time aware packet according to an allocatedbandwidth for the not time aware packet, a packet size of a previouslytransmitted packet with respect to the not time aware packet, and alaunch time of the previously transmitted packet with respect to the nottime aware packet.
 5. The apparatus of claim 1, wherein the single queueis a First-In First-out (FIFO) queue wherein the packets are input tothe single queue based on the launch time of the packets, wherein thepackets are assigned to virtual queues that are each associated with adifferent class of service, wherein the queue merges the packetstogether by combining the packets into the queue in the transmissionorder for being sent on the network.
 6. The apparatus of claim 1,wherein the shaper logic is configured to resolve a conflict between twoof the packets with a launch time that is equal by selecting one of thetwo with a higher priority or class of service, and wherein the mergedtransmission order is a final order for providing the packets on thenetwork in a single stream.
 7. The apparatus of claim 1, wherein thepackets include multiple data streams received from a host bus, whereineach of the multiple data streams is assigned to one of a set of virtualqueues that each have different transmission characteristics, wherein atleast one of the multiple data streams includes packets for audio videobridging (AVB), and wherein packets for the set of virtual queues arestored in the queue in the transmission order before being released ontothe network.
 8. A method, comprising: distributing packets received froma host bus to a plurality of shapers according to one or more attributesof each of the packets for ordering; determining, in each of theplurality of shapers, launch times for the packets stored in therespective shaper; ordering the packets in each of the plurality ofshapers into a transmission order according to the launch times of thepackets in the respective shaper, wherein the launch times are expectedtransmission times for the packets, and wherein the launch times areprovided according to the one or more attributes associated with eachrespective one of the packets; merging, by a queue arbiter connected toeach of the plurality of shapers, the packets from each of the pluralityof shapers into a single queue and ordering the merged packets in thesingle queue based at least in part on the launch times of the packets,wherein the single queue stores the packets from the queue arbiter in amerged transmission order; and releasing the packets from the singlequeue and transmitting the packets onto a network in a single combinedstream in the merged transmission order; identifying a conflict where afirst packet of a first stream and a second packet of a second streamhave a same launch time and, in response to identifying the conflict,set a toggle bit in the second packet; checking that the launch time ofthe first packet matches a current time and transmit the first packet;and reading the toggle bit set within the second packet, wherein basedon the toggle bit, the second packet is transmitted immediately aftertransmission of the first packet from the first stream without checkinga launch time of the second packet with the current time, wherein thesecond packet is assigned to the second stream different than the firststream.
 9. The method of claim 8, wherein releasing the packets from thesingle queue includes releasing the packets on a first-in first-outbasis, wherein releasing the packets includes releasing a packet of thepackets from the queue when a launch time for the packet matches acurrent time and when the packet is next in the transmission order to bereleased.
 10. The method of claim 9, wherein releasing the packetsincludes releasing two consecutive packets in the transmission orderthat have a same launch time according to a toggle bit in a second ofthe two consecutive packets, and wherein the toggle bit indicates thatthe second packet has the same launch time as a previous packet that wasalready transmitted.
 11. The method of claim 8, further comprising:receiving the packets from the host bus, wherein the one or moreattributes include a class of service, a priority or a bandwidthallocation, wherein storing the packets includes storing each wholepacket of the packets in the single queue, wherein determining thelaunch times includes calculating a launch time for one or more of thepackets that are not time aware, and wherein packets that are not timeaware are not sensitive to a delivery time at a client device.
 12. Themethod of claim 8, wherein storing the packets in the single queueincludes storing the packets in a First-In First-out (FIFO) order basedon the launch times of the packets, wherein the packets are assigned tovirtual queues that are each associated with a different class ofservice, and wherein storing the packets in the single queue merges thepackets together by combining the packets from multiple streams into thesingle queue in the transmission order for being sent on the network.13. The method of claim 8, wherein ordering the packets includesresolving a conflict between two or more of the packets with a samelaunch time by selecting one of the two or more packets that has ahigher priority or class of service, and wherein the transmission orderis a final correct order for providing the packets on the network in thesingle stream.
 14. The method of claim 8, wherein receiving the packetsincludes receiving the packets in multiple data streams from the hostbus, wherein each of the multiple data streams is assigned to one of aset of virtual queues that each have different transmissioncharacteristics, wherein at least one of the multiple data streamsincludes packets for audio video bridging (AVB) or Time SensitiveNetwork (TSN), and wherein storing the packets includes storing thepackets for the set of virtual queues in the transmission order beforebeing sent on the network.
 15. A device comprising: a processorconnected to memory; and a plurality of shapers stored within the memoryand executable by the processor, wherein the plurality of shapers areconnected to a bus-side arbiter, wherein the bus-side arbiter providespackets from a host bus to the plurality of shapers, and wherein each ofthe plurality of shapers are configured to respectively determine alaunch time for each of the packets according to transmissioncharacteristics of each of the packets, and wherein the plurality ofshapers each include an output; a queue arbiter stored within the memoryand executable by the processor, wherein the queue arbiter is connectedto outputs from each of the plurality of shapers, and wherein the queuearbiter is configured to merge the packets from the plurality of shapersinto a single queue and order the merged packets in the single queuebased at least in part on the launch times of the packets; wherein thesingle queue includes an input connected to the queue arbiter, whereinthe queue is a single buffer that is configured to store the packets ina merged transmission order for transmission as arranged by the queuearbiter; and a network arbiter stored within the memory and executableby the processor, wherein the network arbiter is (i) connected to thesingle queue and (ii) configured to: release the packets from the singlequeue for transmission onto a network in a single combined stream in themerged transmission order; identify a conflict where a first packet of afirst stream and a second packet of a second stream have a same launchtime and, in response to identifying the conflict, set a toggle bit inthe second packet; check that the launch time of the first packetmatches a current time and transmit the first packet; and read thetoggle bit set within the second packet, wherein based on the togglebit, the second packet is transmitted immediately after transmission ofthe first packet from the first stream without checking a launch time ofthe second packet with the current time, wherein the second packet isassigned to the second stream different than the first stream.
 16. Thedevice of claim 15, wherein the queue arbiter is configured to resolveconflicts between packets that have a same launch time according to thetransmission characteristics of the packets, wherein the transmissioncharacteristics include a transmission priority, a bandwidth allocationor a class of service.
 17. The device of claim 15, wherein the networkarbiter includes an input connected to an output of the single queue,wherein the network arbiter is configured to provide packets from thesingle queue onto the network, wherein the plurality of shapers areconfigured to calculate a launch time for packets that are not timeaware according to an allocated bandwidth associated with a packet, apacket size of a previously transmitted packet and a launch time of thepreviously transmitted packet, wherein the single queue is a first-infirst-out (FIFO) queue, and wherein packets that are not time aware arenot sensitive to a delivery time at a client device.
 18. The device ofclaim 17, wherein the network arbiter is configured to provide a packetfrom the single queue onto the network when an actual time equals alaunch time of the packet and the packet is a next packet in the queue.19. The device of claim 15, wherein each of the plurality of shapersreceives packets that are assigned to one of a set of virtual queues,wherein the set of virtual queues each have a different transmissioncharacteristic, and wherein the launch time for each of the packets is atime when each of the packets is to be transmitted to maintain acontinuous stream of data to a remote device that is receiving thepackets.
 20. The device of claim 15, wherein the single queue mergesstreams of packets associated with multiple virtual queues into theorder for transmission to provide a single stream onto the network.